home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / kernel / xoper_22 / part02 / Xoper.a.ac
Text File  |  1990-02-01  |  40KB  |  1,570 lines

  1.         beq     got_enter
  2.  
  3.         cmp.b   #27,0(a2,d3)        ;esc
  4.         bne     799$
  5.         tst.w   getanswer
  6.         bne     100$
  7.         clr.b   insmode
  8.         clr.w   ibufferlen
  9.         move.w  #200,curpos
  10.         bsr     UpdateIArea
  11.         clr.w   curpos
  12.         tst.w   bottomin
  13.         bne.s   700$
  14.         move.w  #1,bottomin
  15.         bsr     getcurpos
  16.         cmp.b   #5,timerstate
  17.         bne.s   765$
  18.         bsr     starttimer
  19. 765$        bra     100$
  20.  
  21. 700$        move.b  timerio+8,timerstate
  22.         bsr     stoptimer
  23.         move.w  edline(PC),d0
  24.         move.l  firstline(PC),d4
  25.         cmp.w   d4,d0
  26.         bmi.s   701$
  27.         move.w  d4,d5
  28.         add.w   rows(PC),d5
  29.         cmp.w   d5,d0
  30.         bmi.s   702$
  31. 701$        move.w  rows(PC),d0
  32.         lsr.w   #1,d0
  33.         add.w   d4,d0
  34. 702$        move.l  numlines(PC),d3
  35.         subq    #1,d3
  36.         cmp.w   d3,d0
  37.         ble.s   703$
  38.         move.w  d3,d0
  39. 703$        move.w  d0,edline
  40.         sub.w   d4,d0
  41.         lsl.w   #3,d0
  42.         add.w   #18,d0
  43.         move.w  d0,cposy
  44.         clr.w   bottomin
  45.         tst.w   loffset
  46.         beq.s   704$
  47.         clr.w   loffset
  48.         bsr     blastout
  49. 704$        bra     100$
  50.  
  51. 799$        cmp.b   #8,0(a2,d3)         ;Backspace
  52.         bne.s   114$
  53.         tst.w   d4
  54.         beq     102$
  55.         bsr     delchar
  56.         subq    #1,d4
  57.         move.w  d4,curpos
  58.         bra     102$
  59.  
  60. 114$        cmp.b   #127,0(a2,d3)       ;del
  61.         bne.s   150$
  62. 178$        cmp.w   ibufferlen(PC),d4
  63.         bge     102$
  64.         addq    #1,d4
  65.         bsr     delchar
  66.         bra     102$
  67.  
  68. 150$        cmp.b   #9,0(a2,d3)         ;tab
  69.         bne     197$
  70.         move.w  cmdcompflag(PC),d0
  71.         bpl.s   151$
  72.         move.w  curpos(PC),cmdcomplen
  73. 151$        move.w  #1,cmdcompflag
  74. 155$        move.w  cmdcompnr(PC),d0
  75.         bsr     getcmdptr
  76.         move.l  d0,a0
  77.         move.w  cmdcomplen(PC),d4
  78.         lea     inputbuffer,a1
  79.         subq    #1,d4
  80. 152$        tst.b   0(a0)
  81.         beq.s   153$
  82.         cmp.b   (a0)+,(a1)+
  83.         bne.s   153$
  84.         dbf     d4,152$
  85.         move.l  d0,a1
  86.         lea     inputbuffer,a0
  87. 154$        move.b  (a1)+,(a0)+
  88.         dbeq.s  d4,154$
  89.         neg.w   d4
  90.         subq    #1,d4
  91.         move.w  d4,curpos
  92.         move.w  d4,ibufferlen
  93.         add.w   #1,cmdcompnr
  94.         cmp.w   #cmdnum,cmdcompnr
  95.         beq.s   156$
  96.         bra     100$
  97. 153$        move.w  cmdcompnr(PC),d0
  98.         addq    #1,d0
  99.         move.w  d0,cmdcompnr
  100.         cmp.w   #cmdnum,d0
  101.         bmi.s   155$
  102. 156$        clr.w   cmdcompnr
  103.         bra     100$
  104.  
  105. 197$        cmp.b   #3,0(a2,d3)         ;ctrl c
  106.         bne.s   104$
  107.         move.b  #1,cbreak
  108.  
  109. 104$        tst.b   addlines
  110.         bne     processnxtmsg
  111.         cmp.b   #$18,0(a2,d3)       ;ctrl x
  112.         bne.s   300$
  113.         clr.w   ibufferlen
  114.         clr.w   curpos
  115.         bra     100$
  116.  
  117. 300$        cmp.b   #$19,0(a2,d3)       ;ctrl y
  118.         bne.s   106$
  119.         move.w  curpos,ibufferlen
  120.         bra     100$
  121.  
  122. 106$        move.w  #$100,d5        ;NumPad
  123.         and.w   qualifier(PC),d5
  124.         beq     105$
  125.         move.l  firstline(PC),d5
  126.  
  127.         cmp.b   #'7',0(a2,d3)       ;'Home'
  128.         bne.s   200$
  129.         moveq   #0,d5
  130. 199$        move.l  d5,firstline
  131.         bsr     blastout
  132.         tst.w   bottomin
  133.         bne.s   196$
  134.         move.w  edline(PC),d0
  135.         move.l  firstline(PC),d1
  136.         cmp.w   d1,d0
  137.         bmi.s   190$
  138.         add.w   rows(PC),d1
  139.         cmp.w   d1,d0
  140.         bmi.s   192$
  141. 190$        clr.w   curpos
  142.         clr.w   ibufferlen
  143.         move.w  rows(PC),d0
  144.         lsr.w   #1,d0
  145.         ext.l   d0
  146.         add.l   firstline(PC),d0
  147.         cmp.l   numlines(PC),d0
  148.         bmi.s   191$
  149.         move.l  numlines(PC),d0
  150.         subq    #1,d0
  151. 191$        move.w  d0,edline
  152. 192$        bsr     getcurpos
  153.         bsr     UpdateIArea
  154. 196$        bra     100$
  155.  
  156. 200$        cmp.b   #'8',0(a2,d3)       ;'up arrow'
  157.         bne.s   201$
  158.         tst     d5
  159.         beq     100$
  160.         subq    #1,d5
  161.         bra.s   199$
  162.  
  163. 201$        cmp.b   #'9',0(a2,d3)       ;'PgUp'
  164.         bne.s   203$
  165.         sub.w   rows(PC),d5
  166.         bpl.s   199$
  167.         moveq   #0,d5
  168.         bra.s   199$
  169.  
  170. 203$        cmp.b   #'1',0(a2,d3)       ;'End'
  171.         bne.s   205$
  172. 222$        move.l  numlines(PC),d5
  173.         sub.w   rows(PC),d5
  174.         bpl     199$
  175.         moveq   #0,d5
  176. 204$        bra     199$
  177.  
  178. 205$        cmp.b   #'2',0(a2,d3)       ;'down arrow'
  179.         bne.s   206$
  180.         move.l  d5,d2
  181.         add.w   rows(PC),d2
  182.         cmp.l   numlines(PC),d2
  183.         bge     100$
  184.         addq    #1,d5
  185.         bra     199$
  186.  
  187. 206$        cmp.b   #'3',0(a2,d3)       ;'PgDn'
  188.         bne.s   500$
  189.         add.w   rows(PC),d5
  190.         move.l  d5,d2
  191.         add.w   rows(PC),d2
  192.         cmp.l   numlines(PC),d2
  193.         bge.s   222$
  194.         bra     199$
  195.  
  196. 500$        cmp.b   #'4',0(a2,d3)       ;left arrow
  197.         bne.s   501$
  198.         tst.w   bottomin
  199.         beq     102$
  200.         move.w  loffset(PC),d2
  201.         sub.w   colms(PC),d2
  202.         bpl.s   502$
  203.         moveq   #0,d2
  204. 502$        move.w  d2,loffset
  205.         bsr     blastout
  206.         bra     100$
  207.  
  208. 501$        cmp.b   #'6',0(a2,d3)       ;right arrow
  209.         bne.s   170$
  210.         tst.w   bottomin
  211.         beq     102$
  212.         move.w  loffset(PC),d2
  213.         add.w   colms(PC),d2
  214.         bra.s   502$
  215.  
  216. 170$        cmp.b   #'0',0(a2,d3)       ;Ins
  217.         bne.s   177$
  218.         eor.b   #1,insmode
  219.         bra.s   102$
  220.  
  221. 177$        cmp.b   #'.',0(a2,d3)       ;Del
  222.         beq     178$
  223.  
  224. 105$        tst.w   bottomin
  225.         bne.s   777$
  226.         tst.w   curpos
  227.         bne.s   777$
  228.         movem.l d0-d1,-(a7)
  229.         move.w  edline(PC),d0
  230.         bsr     findline
  231.         movem.l (a7)+,d0-d1
  232.         tst.l   8(a5)
  233.         beq     intuiend
  234. 777$        move.w  curpos(PC),d5
  235.         ext.l   d5
  236.         moveq   #79,d2
  237.         cmp.w   d2,d5
  238.         bge     102$
  239.         tst.b   insmode
  240.         beq.s   172$
  241.         cmp.w   ibufferlen(PC),d5
  242.         bmi.s   171$
  243.         bra.s   173$
  244. 172$        sub     d5,d2
  245.         lea     80(a1),a4
  246.         lea     79(a1),a3
  247. 103$        move.b  -(a3),-(a4)
  248.         dbf     d2,103$
  249. 173$        addq.w  #1,ibufferlen
  250. 171$        move.b  0(a2,d3),0(a1,d5)
  251.         addq.w  #1,curpos
  252. 102$        subq    #1,d0
  253.         addq    #1,d3
  254.         bra     101$
  255.  
  256. 100$        bsr     UpdateIArea
  257.         bra     intuiend
  258.  
  259. got_enter   bsr     puthist
  260. got_fkey    bsr     stoptimer
  261.         clr.b   insmode
  262.         lea     dummy,a1
  263.         lea     inputbuffer,a2
  264.         move.w  ibufferlen(PC),d2
  265.         beq.s   2$
  266.         tst.w   bottomin
  267.         bne.s   5$
  268.         movem.l a1-a2,-(a7)
  269.         move.w  edline(PC),d0
  270.         bsr     findline
  271.         move.l  8(a5),d0
  272.         bsr     gthex
  273.         lea     hexarea(PC),a0
  274.         lea     0(a2,d2),a1
  275.         move.b  #' ',(a1)+
  276.         move.b  #'$',(a1)+
  277.         moveq   #8,d0
  278.         CALL    CopyMem,_SysBase(PC)
  279.         move.w  ibufferlen(PC),d2
  280.         add.w   #10,d2
  281.         move.w  d2,ibufferlen
  282.         movem.l (a7)+,a1-a2
  283. 5$        subq    #1,d2
  284. 1$        move.b  (a2)+,(a1)+
  285.         dbf     d2,1$
  286. 2$        move.b  #10,(a1)+
  287.         move.w  ibufferlen(PC),d0
  288.         ext.l   d0
  289.         addq    #1,d0
  290.         move.l  d0,-(a7)
  291.         clr.w   ibufferlen
  292.         tst.w   bottomin
  293.         bne.s   4$
  294.         move.w  #100,curpos
  295.         bsr     UpdateIArea
  296. 4$        clr.w   curpos
  297.         move.w  #1,bottomin
  298.         bsr     getcurpos
  299.         bsr     UpdateIArea
  300.         move.l  (a7)+,d0
  301.         move.w  d0,repeatlen
  302.         clr.w   repeat
  303.         clr.b   printed
  304.         tst.w   getanswer
  305.         beq.s   6$
  306.         rts
  307. 6$        bsr     cli
  308.         tst.b   printed
  309.         bne.s   3$
  310.         bsr     starttimer
  311. 3$        bra     intuiend
  312.  
  313. notarawkey
  314.  
  315. intuiend    bsr.s   replyintui
  316.         bra     nextimsg
  317. processnxtmsg
  318.         tst.b   addlines
  319.         beq.s   1$
  320.         rts
  321. 1$        bra     processmsgs
  322.  
  323. replyintui  move.l  intuimsg(PC),d0
  324.         beq.s   1$
  325.         move.l  d0,a1
  326.         CALL    ReplyMsg,_SysBase
  327. 1$        clr.l   intuimsg
  328.         rts
  329.  
  330. ;put an input line into the history buffer
  331. puthist     move.w  ibufferlen(PC),d5
  332.         move.l  d5,d0
  333.         cmp.w   minnumchars(PC),d0
  334.         bcs     1$
  335.  
  336.         move.l  gothline(PC),d1
  337.         beq.s   5$
  338.         move.l  d1,a2
  339.         cmp.w   8(a2),d5
  340.         bne.s   5$
  341.         lea     10(a2),a2
  342.         lea     inputbuffer,a1
  343.         subq    #1,d0
  344. 6$        cmp.b   (a2)+,(a1)+
  345.         bne.s   5$
  346.         dbf     d0,6$
  347.         move.l  gothline,curhist
  348.         bra.s   1$
  349.  
  350. 5$        move.w  d5,d0
  351.         ext.l   d0
  352.         add     #10,d0
  353.         move.l  #$10000,d1         ;MEMF_CLEAR
  354.         CALL    AllocMem,_SysBase(PC)
  355.         tst.l   d0
  356.         beq.s   1$
  357.         move.l  d0,a0
  358.         move.w  d5,8(a0)
  359.         lea     10(a0),a2
  360.         subq    #1,d5
  361.         lea     inputbuffer,a1
  362. 2$        move.b  (a1)+,(a2)+
  363.         dbf     d5,2$
  364.         move.w  hnum(PC),d5
  365.         cmp.w   maxhlines(PC),d5
  366.         bmi.s   3$
  367.         bsr     remhistline
  368.         bra.s   4$
  369. 3$        addq    #1,d5
  370.         move.w  d5,hnum
  371. 4$        move.l  d0,a1
  372.         move.l  d0,curhist
  373.         lea     history(PC),a0
  374.         CALL    AddTail,_SysBase(PC)
  375. 1$        clr.l   gothline
  376.         rts
  377.  
  378. ;copy a history line into the input buffer
  379. copyhistory lea     inputbuffer,a0
  380.         move.w  8(a1),d3
  381.         ext.l   d3
  382.         move.w  d3,curpos
  383.         move.w  d3,ibufferlen
  384.         subq    #1,d3
  385.         lea     10(a1),a1
  386. 1$        move.b  (a1)+,(a0)+
  387.         dbf     d3,1$
  388.         rts
  389. ;remove one line from the history buffer
  390. ;pointer to the line in A1, returns pointer to the next line in d1
  391. remhistline move.l  d0,-(a7)
  392.         lea     history(PC),a0
  393.         move.l  0(a0),a5
  394.         tst.l   0(a5)
  395.         beq.s   1$
  396.         CALL    RemHead,_SysBase(PC)
  397.         move.l  a5,a1
  398.         move.w  8(a1),d0
  399.         add     #10,d0
  400.         ext.l   d0
  401.         CALL    FreeMem,_SysBase(PC)
  402. 1$        move.l  (a7)+,d0
  403.         rts
  404.  
  405. ;kill all history lines
  406. killhistory bsr     remhistline
  407.         move.l  history(PC),a0
  408.         tst.l   0(a0)
  409.         bne.s   killhistory
  410. 2$        clr.w   hnum
  411.         clr.l   curhist
  412.         rts
  413. ;delete one char from the input line
  414. delchar     lea     inputbuffer,a3
  415.         lea     0(a3,d4.w),a3
  416.         lea     -1(a3),a4
  417.         move    d4,d5
  418. 1$        cmp.w   #78,d5
  419.         bge.s   2$
  420.         move.b  (a3)+,(a4)+
  421.         addq    #1,d5
  422.         bra.s   1$
  423. 2$        subq.w  #1,ibufferlen
  424.         rts
  425.  
  426. testsig     move.l  tasksigs(PC),d0
  427.         btst    d1,d0
  428.         rts
  429.  
  430. ;get the position of the input area
  431. iareapos    move.l  wnptr(PC),a0
  432.         move.w  10(a0),d0
  433.         subq    #4,d0
  434.         move.w  d0,ipos
  435.         rts
  436.  
  437. ;Update the current position of the input line
  438. getcurpos   tst.w   bottomin
  439.         beq.s   1$
  440.         move.w  ipos,cposy
  441.         rts
  442. 1$        move.w  edline(PC),d3
  443.         sub.l   firstline(PC),d3
  444.         lsl     #3,d3
  445.         add.w   #18,d3
  446.         move.w  d3,cposy
  447.         rts
  448. ;refresh the input area
  449. UpdateIArea move.l  rastport(PC),a1
  450.         move.l  #1,d0
  451.         CALL    SetDrMd,gfxbase(PC)
  452.         moveq   #6,d0
  453.         move.w  cposy(PC),d1
  454.         move.l  rastport(PC),a1
  455.         CALL    Move,gfxbase(PC)
  456.         lea     inputbuffer,a0
  457.         move.w  ibufferlen(PC),d0
  458.         ext.l   d0
  459.         move.w  colms(PC),d1
  460.         sub.w   bottomin(PC),d1
  461.         cmp.w   d1,d0
  462.         bmi.s   1$
  463.         move.w  d1,d0
  464. 1$        move.w  d0,d2
  465.         move.l  rastport(PC),a1
  466.         CALL    Text,gfxbase(PC)
  467.  
  468.         tst.w   bottomin
  469.         bne.s   3$
  470.         move.w  edline(PC),d0
  471.         bsr     findline
  472.         move.w  12(a5),d3
  473.         sub.w   d2,d3
  474.         bmi.s   3$
  475.         move.w  colms(PC),d1
  476.         sub.w   d2,d1
  477.         bmi.s   2$
  478.         cmp.w   d1,d3
  479.         ble.s   4$
  480.         move.w  d1,d3
  481. 4$        move.w  d3,d0
  482.         lea     14(a5,d2.w),a0
  483.         move.l  rastport(PC),a1
  484.         CALL    Text,gfxbase(PC)
  485.         add.w   ibufferlen(PC),d3
  486.         move.w  d3,d2
  487.  
  488. 3$        move.w  colms(PC),d0
  489.         sub.w   bottomin(PC),d0
  490.         move.l  blanks(PC),a0
  491.         ext.l   d0
  492.         sub.w   d2,d0
  493.         bmi.s   2$
  494.         lea     0(a0,d2.w),a0
  495.         move.l  rastport(PC),a1
  496.         CALL    Text,gfxbase(PC)
  497. 2$        bsr     putcursor
  498.         rts
  499.  
  500. clrcursor   moveq   #1,d7
  501.         bra.s   ptc1
  502. putcursor   moveq   #6,d7
  503. ptc1        move.w  curpos(PC),d0
  504.         move.w  colms(PC),d1
  505.         subq    #1,d1
  506.         sub.w   bottomin(PC),d1
  507.         cmp.w   d0,d1
  508.         bmi.s   1$
  509.         move.l  rastport(PC),a1
  510.         move.l  d7,d0
  511.         CALL    SetDrMd,gfxbase(PC)
  512.         move.w  cposy(PC),d1
  513.         move.w  curpos(PC),d0
  514.         lsl.w   #3,d0
  515.         addq    #6,d0
  516.         move.l  rastport(PC),a1
  517.         CALL    Move,gfxbase(PC)
  518.         lea     oneblank(PC),a0
  519.         moveq   #1,d0
  520.         move.l  rastport(PC),a1
  521.         CALL    Text,gfxbase(PC)
  522. 1$        rts
  523. ;rebuild the window from scratch
  524. setupscreen move.l  rastport(PC),a1
  525.         moveq   #0,d0
  526.         CALL    SetRast,gfxbase(PC)
  527.         move.l  wnptr,a0
  528.         CALL    RefreshWindowFrame,intuibase(PC)
  529.         bsr     getwindowsize
  530.         tst.w   bottomin
  531.         bne.s   1$
  532.         move.w  edline(PC),d0
  533.         move.l  firstline(PC),d1
  534.         move.w  rows(PC),d2
  535.         move.w  d2,d4
  536.         move.w  numlines(PC),d3
  537.         add.w   d1,d2
  538.         cmp.w   d2,d0
  539.         bmi.s   2$
  540.         lsr.w   #1,d4
  541.         sub.w   d4,d0
  542.         ext.l   d0
  543.         move.l  d0,firstline
  544. 2$        bsr     tstfirstlin
  545. 1$        bsr     getcurpos
  546.         bsr     putiline
  547.         bsr     blastout
  548.         bsr     UpdateIArea
  549.         move.w  rows,currenty
  550.         rts
  551.  
  552. putiline    move.l  rastport(PC),a1
  553.         moveq   #1,d0
  554.         CALL    SetAPen,gfxbase(PC)
  555.         move.l  rastport(PC),a1
  556.         moveq   #1,d0
  557.         CALL    SetDrMd,gfxbase(PC)
  558.         move.l  wnptr(PC),a5
  559.         move.w  10(a5),d1
  560.         sub.w   #12,d1
  561.         moveq   #0,d0
  562.         move.l  rastport(PC),a1
  563.         CALL    Move,gfxbase(PC)
  564.         move.w  8(a5),d0
  565.         move.w  d1,-(a7)
  566.         move.l  rastport(PC),a1
  567.         CALL    Draw,gfxbase(PC)
  568.         move.w  (a7)+,d1
  569.         tst.b   ownscreen
  570.         bne.s   1$
  571.         move.w  8(a5),d0
  572.         addq    #1,d1
  573.         move.l  rastport(PC),a1
  574.         CALL    Move,gfxbase(PC)
  575.         sub.w   #16,d0
  576.         move.w  d1,-(a7)
  577.         move.l  rastport(PC),a1
  578.         CALL    Draw,gfxbase(PC)
  579.         move.w  (a7)+,d1
  580.         move.w  8(a5),d0
  581.         addq    #1,d1
  582.         move.l  rastport(PC),a1
  583.         CALL    Move,gfxbase(PC)
  584.         sub.w   #16,d0
  585.         move.l  rastport(PC),a1
  586.         CALL    Draw,gfxbase(PC)
  587. 1$        rts
  588.  
  589. getwindowsize
  590.         bsr     freeblank
  591.         move.l  wnptr(PC),a0
  592.         move.w  10(a0),d0
  593.         sub.w   #26,d0
  594.         lsr.w   #3,d0
  595.         move.w  d0,rows
  596.         move.w  8(a0),d0
  597.         sub.w   #12,d0
  598.         lsr.w   #3,d0
  599.         move.w  d0,colms
  600.         ext.l   d0
  601.         moveq   #0,d1
  602.         move.l  d0,d6
  603.         CALL    AllocMem,_SysBase(PC)
  604.         move.l  d0,blanks
  605.         move.l  d0,a0
  606.         subq    #1,d6
  607. 1$        move.b  #' ',(a0)+
  608.         dbf     d6,1$
  609.         bsr     iareapos
  610.         rts
  611.  
  612. readline    move.b  #'n',inputbuffer
  613.         tst.b   fromfile
  614.         bne.s   1$
  615.         move.l  #31000,firstline
  616.         bsr     blastout
  617.         move.w  #1,getanswer
  618.         bsr     replyintui
  619. 5$        bsr     processmsgs
  620.         move.w  d0,d5
  621.         bsr     replyintui
  622.         subq    #1,d5
  623.         beq.s   5$
  624.         ori.b   #$20,inputbuffer
  625.         clr.w   getanswer
  626.         bsr     RestoreOutput
  627. 1$        rts
  628.  
  629. ResumeOutput
  630.         move.l  outchain(PC),d0
  631.         move.l  d0,a1
  632.         beq.s   2$
  633.         move.l  numlines,oldnumlines
  634.         move.l  firstline,oldfirstline
  635. 4$        tst.l   0(a1)
  636.         beq.s   3$
  637.         move.l  0(a1),a1
  638.         bra.s   4$
  639. 3$        move.l  a1,lastprinted
  640. 2$        move.l  a1,oldpageend
  641.         rts
  642.  
  643. RestoreOutput
  644.         move.l  oldpageend(PC),d3
  645.         beq.s   1$
  646.         move.l  oldnumlines(PC),numlines
  647.         move.l  oldfirstline(PC),firstline
  648.         move.l  oldlastprinted(PC),lastprinted
  649.         move.l  d3,a1
  650.         move.l  0(a1),a1
  651.         bsr     killlines
  652.         move.l  d3,a1
  653.         clr.l   0(a1)
  654.         bsr     blastout
  655. 1$        rts
  656.  
  657. addline     movem.l d0-d6/a0-a3,-(a7)
  658.         move.l  rastport(PC),a1
  659.         moveq   #1,d0
  660.         CALL    SetAPen,gfxbase(PC)
  661.         move.l  rastport(PC),a1
  662.         moveq   #1,d0
  663.         CALL    SetDrMd,gfxbase(PC)
  664.         move.w  currenty(PC),d6
  665.         cmp.w   rows(PC),d6
  666.         bmi.s   1$
  667.         bsr     cls
  668. 1$        move.l  lastprinted(PC),a0
  669.         move.w  colms(PC),d5
  670.         move.w  12(a0),d3
  671.         lea     14(a0),a0
  672.         move.w  currenty(PC),d6
  673.         move    d6,d7
  674.         lsl     #3,d6
  675.         add.w   #18,d6
  676.         moveq   #0,d4
  677.         bsr     blastline
  678.         addq.w  #1,currenty
  679.         move.l  #31000,firstline
  680.         movem.l (a7)+,d0-d6/a0-a3
  681.         rts
  682.  
  683. cls        movem.l d0-d6/a0-a3,-(a7)
  684.         move.l  rastport(PC),a1
  685.         moveq   #1,d0
  686.         CALL    SetAPen,gfxbase(PC)
  687.         move.l  rastport(PC),a1
  688.         moveq   #1,d0
  689.         move.l  rastport(PC),a1
  690.         CALL    SetDrMd,gfxbase(PC)
  691.         move.w  colms(PC),d5
  692.         clr.w   d2
  693. 1$        move.w  d2,d6
  694.         move    d5,d7
  695.         lsl     #3,d6
  696.         add.w   #18,d6
  697.         moveq   #0,d3
  698.         move.l  blanks(PC),a0
  699.         bsr     blastline
  700.         addq    #1,d2
  701.         cmp.w   rows(PC),d2
  702.         bmi.s   1$
  703.         clr.w   currenty
  704.         movem.l (a7)+,d0-d6/a0-a3
  705.         rts
  706.  
  707. createscreen moveq  #1,d1
  708.         moveq   #80,d0
  709.         lea     buffer,a0
  710.         sub.l   a1,a1
  711.         CALL    GetScreenData,intuibase(PC)
  712.         move.w  buffer+76,nsviewmode
  713.         move.l  buffer+12,nssize
  714.         lea     newscreen(PC),a0
  715.         CALL    OpenScreen,intuibase(PC)
  716.         move.l  d0,screenptr
  717.         move.l  d0,nwscreen
  718.         move.w  #$f,nwtype
  719.         beq.s   setupwindow
  720.         tst.l   wnptr
  721.         beq.s   1$
  722.         move.l  wnptr(PC),a0
  723.         move.l  4(a0),window_l
  724.         move.l  8(a0),window_w
  725.         CALL    CloseWindow,intuibase(PC)
  726.         clr.l   intuimsg
  727.         clr.l   wnptr
  728. 1$        clr.l   newwindow
  729.         move.l  buffer+12,newwindow+4
  730.         move.l  wnscrflags(PC),nwflgs
  731.         move.l  wnscrflags+4(PC),nwflgs+4
  732.         move.b  #1,ownscreen
  733.  
  734. setupwindow tst.b   ownscreen
  735.         bne.s   3$
  736.         move.l  window_l(PC),newwindow
  737.         move.l  window_w(PC),newwindow+4
  738.         move.w  #1,nwtype
  739.         move.l  wnnormflgs(PC),nwflgs
  740.         move.l  wnnormflgs+4(PC),nwflgs+4
  741. 3$        lea     newwindow(PC),a0
  742.         CALL    OpenWindow,intuibase(PC)
  743.         move.l  d0,wnptr
  744.         beq     exit
  745.         move.l  d0,a0
  746.         move.l  50(a0),rastport    ;wn->RPort
  747.         move.l  86(a0),a1          ;wn->UserPort
  748.         move.b  15(a1),d1          ;MsgPort->SigBit
  749.         ext.w   d1
  750.         move.w  d1,intuisig
  751.  
  752.         tst.b   iconifyon
  753.         beq.s   1$
  754.         tst.b   ownscreen
  755.         bne.s   1$
  756.         lea     iconifgad,a1
  757.         moveq   #0,d0
  758.         CALL    AddGadget,intuibase(PC)
  759.         move.l  wnptr(PC),a0
  760.         CALL    RefreshWindowFrame,intuibase(PC)
  761.  
  762. 1$        lea     tattr(PC),a0
  763.         CALL    OpenFont,gfxbase(PC)
  764.         tst.l   d0
  765.         beq.s   2$
  766.         move.l  d0,a0
  767.         move.l  rastport(PC),a1
  768.         CALL    SetFont,gfxbase(PC)
  769. 2$        bsr     getwindowsize
  770.         bsr     getcurpos
  771.  
  772.         bsr     putiline
  773.         bsr     UpdateIArea
  774.         bsr     starttimer
  775.         bsr     showwhat
  776.         rts
  777.  
  778. usescreen   tst.b   fromfile
  779.         bne.s   1$
  780.         tst.b   ownscreen
  781.         bne.s   1$
  782.         bsr     createscreen
  783. 1$        move.b  #1,ownscreen
  784.         rts
  785.  
  786. usewindow   tst.b   fromfile
  787.         beq.s   1$
  788.         clr.b   ownscreen
  789.         rts
  790. 1$        tst.b   ownscreen
  791.         beq.s   2$
  792.         move.l  wnptr(PC),d0
  793.         beq.s   3$
  794.         move.l  d0,a0
  795.         CALL    CloseWindow,intuibase(PC)
  796.         clr.l   wnptr
  797.         clr.l   intuimsg
  798. 3$        move.l  screenptr(PC),d0
  799.         beq.s   4$
  800.         move.l  d0,a0
  801.         CALL    CloseScreen,intuibase(PC)
  802.         clr.l   screenptr
  803.         clr.b   ownscreen
  804. 4$        bra     setupwindow
  805. 2$        rts
  806.  
  807. dchange     lea     dchead(PC),a0
  808.         bsr     puthead
  809.         lea     tdd(PC),a1
  810.         move.l  _SysBase(PC),a0
  811.         lea     350(a0),a0
  812.         CALL    FindName,_SysBase(PC)
  813.         tst.l   d0
  814.         beq     R_T_S
  815.         move.l  d0,a2
  816.         lea     32(a2),a2
  817.         moveq   #0,d5
  818. 2$        lea     4(a2),a2
  819.         move.l  0(a2),d0
  820.         beq     3$
  821.         move.l  d0,a0
  822.         lea     $18e(a0),a0
  823.         CALL    Disable,_SysBase(PC)
  824. 5$        tst.l   0(a0)
  825.         beq.s   6$
  826.         move.l  0(a0),a0
  827.         bra.s   5$
  828. 6$        lea     -4(a0),a5
  829.         lea     buffer+100,a3
  830. 9$        move.l  0(a5),a5
  831.         tst.l   0(a5)
  832.         beq.s   11$
  833.         move.l  a5,(a3)+
  834.         bne.s   9$
  835. 11$        clr.l   (a3)+
  836.         CALL    Enable,_SysBase(PC)
  837.         lea     buffer+100,a3
  838. 7$        move.l  (a3)+,d0
  839.         beq.s   3$
  840.         move.l  d0,a5
  841.         cmp.w   #20,28(a5)
  842.         bne.s   7$
  843.         move.l  40(a5),a4
  844.         move.l  a4,d0
  845.         move.l  d0,node
  846.         bsr     hexan
  847.         move.l  a4,d0
  848.         beq.s   10$
  849.         move.l  14(a4),d0
  850.         bsr     hexan
  851.         move.l  18(a4),d0
  852.         bsr     hexan
  853. 10$        move.l  d5,d3
  854.         or.b    #48,d3
  855.         move.b  d3,tddrives+2
  856.         move.l  #tddrives,d0
  857.         bsr     putstr
  858.         move.l  14(a5),d0
  859.         beq.s   8$
  860.         move.l  d0,a0
  861.         move.l  16(a0),d0
  862. 8$        bsr     getaskname2
  863.         bsr     newline
  864.         bra.s   7$
  865. 3$        addq    #1,d5
  866.         cmp.w   #4,d5
  867.         bmi     2$
  868. R_T_S        rts
  869.  
  870.  
  871. DATASTART   EQU     *
  872.  
  873. dosbase     dc.l    0
  874. intuibase   dc.l    0
  875. gfxbase     dc.l    0
  876. condev        dc.l    0
  877. parmtxt     dc.l    0
  878. infile        dc.l    0
  879. ptr        dc.l    0
  880. oldidl        dc.l    0
  881. olddisp     dc.l    0
  882. mysignal    dc.l    0
  883. auxsig        dc.l    0
  884. trapsignal  dc.l    0
  885. iostatus    dc.l    -1
  886. devstatus   dc.l    -1
  887. tasksigs    dc.l    0
  888. cancelbit   dc.l    0
  889. cancelbnum  dc.l    0
  890. _SysBase    dc.l    0
  891. InputMsg    dc.l    0
  892. InRequest   dc.l    0
  893. startmess   dc.l    0
  894. savedat     dc.l    0
  895. wnptr        dc.l    0
  896. aliaslist   dc.l    0
  897. screenptr   dc.l    0
  898. intuimsg    dc.l    0
  899. mytask        dc.l    0
  900. wbmsg        dc.l    0
  901. pointer     dc.l    0
  902. replyport   dc.l    0
  903. timerport   dc.l    0
  904. finfoptr    dc.l    0
  905. myseg        dc.l    0
  906. dispatches  dc.l    0
  907. maxdisp     dc.l    0
  908. deltadisp   dc.l    0
  909. wbaddr        dc.l    0
  910. node        dc.l    0
  911. remembr     dc.l    0
  912. remembr2    dc.l    0
  913. captask     dc.l    0
  914. snoopport   dc.l    0
  915. tasksnum    dc.l    0
  916. blanks        dc.l    0
  917. hidestart   dc.l    0
  918. dispnum     dc.l    0
  919. iocount     dc.l    0
  920. dummyinput  dc.l    0
  921. rastport    dc.l    0
  922. outchain    dc.l    0
  923. firstline   dc.l    0
  924. oldfirstline dc.l   0
  925. timeoutm    dc.l    0
  926. numlines    dc.l    0
  927. oldnumlines dc.l    0
  928. gothline    dc.l    0
  929. lastprinted dc.l    0
  930. oldlastprinted dc.l 0
  931. oldpageend  dc.l    0
  932. maxlines    dc.l    500
  933. realstack   dc.l    0
  934.  
  935.  
  936. wnnormflgs  dc.l    $646
  937.         dc.l    $1104f
  938.  
  939. wnscrflags  dc.l    $600
  940.         dc.l    $31948
  941.  
  942. fkeys        dc.l    *+4
  943.         dc.l    0
  944.         dc.l    fkeys
  945.  
  946. history     dc.l    *+4
  947.         dc.l    0
  948.         dc.l    history
  949. curhist     dc.l    0
  950.  
  951. secs        dc.l    0
  952. mics        dc.l    0
  953. time10        dc.l    0
  954.  
  955. tattr        dc.l    fontname
  956.         dc.w    8
  957.         dc.w    0
  958.  
  959. stplist     dc.l    lh_tail
  960. lh_tail     dc.l    0
  961.         dc.l    stplist
  962.         dc.b    1
  963.         dc.b    0
  964.  
  965. InInterrupt dc.l    0        ;ln_Succ
  966.         dc.l    0        ;ln_Pred
  967.         dc.b    2        ;ln_Type
  968.         dc.b    60        ;ln_Pri
  969.         dc.l    xopsleep    ;ln_Name
  970.         dc.l    0        ;is_Data
  971.         dc.l    Keyhandler    ;is_Code()
  972.  
  973. IOCounter   dc.l    0        ;ln_Succ
  974.         dc.l    0        ;ln_Pred
  975.         dc.b    2        ;ln_Type
  976.         dc.b    -1        ;ln_Pri
  977.         dc.l    IOcntname    ;ln_Name
  978.         dc.l    0        ;is_Data
  979.         dc.l    countio    ;is_Code()
  980.  
  981. newwindow   dc.w    0,0
  982.         dc.w    500,100
  983.         dc.b    0,1
  984. nwflgs        dc.l    $646
  985.         dc.l    $1104f
  986. wn_firstgad dc.l    0
  987.         dc.l    0
  988.         dc.l    windowname
  989. nwscreen    dc.l    0
  990.         dc.l    0
  991.         dc.w    110,50
  992.         dc.w    808,-1
  993. nwtype        dc.w    1
  994.  
  995. newscreen   dc.w    0,0
  996. nssize        dc.w    0,0
  997.         dc.w    1
  998.         dc.b    0
  999.         dc.b    1
  1000. nsviewmode  dc.w    0
  1001.         dc.w    $1f
  1002.         dc.l    0
  1003.         dc.l    windowname
  1004.         dc.l    0,0
  1005.  
  1006. excpterror  dc.l    0
  1007. excpttask   dc.l    0
  1008. excptaddr   dc.l    0
  1009. excptpc     dc.l    0
  1010.  
  1011. window_l    dc.w    0
  1012. window_t    dc.w    0
  1013. window_w    dc.w    550
  1014. window_h    dc.w    200
  1015.  
  1016. colms        dc.w    0
  1017. timersig    dc.w    0
  1018. intuisig    dc.w    0
  1019. ibufferlen  dc.w    0
  1020. cposy        dc.w    0
  1021. curpos        dc.w    0
  1022. bottomin    dc.w    1
  1023. ipos        dc.w    0
  1024. hnum        dc.w    0
  1025. minnumchars dc.w    2
  1026. maxhlines   dc.w    10
  1027. qualifier   dc.w    0
  1028. rows        dc.w    0
  1029. maxllength  dc.w    0
  1030. loffset     dc.w    0
  1031. repeat        dc.w    0
  1032. repeatlen   dc.w    0
  1033. edline        dc.w    999
  1034. cmdptr        dc.w    0
  1035. getanswer   dc.w    0
  1036. currenty    dc.w    0
  1037. cmdcompnr   dc.w    0
  1038. cmdcomplen  dc.w    -1
  1039. cmdcompflag dc.w    0
  1040.  
  1041. binarea     dc.b    '          ',0
  1042.         EVEN
  1043. minus        dc.b    '  '
  1044. decimal     dc.b    '    ',0
  1045. entries     dc.b    0
  1046. timeout     dc.b    5
  1047. procnum     dc.b    0
  1048. timerstate  dc.b    0
  1049. running     dc.b    0
  1050. newpri        dc.b    0
  1051. tasktyp     dc.b    0
  1052. background  dc.b    0
  1053. bool        dc.b    0
  1054. printed     dc.b    0
  1055. cbreak        dc.b    0
  1056. usageflag   dc.b    0
  1057. mnflag        dc.b    1
  1058. tports        dc.b    1
  1059. headon        dc.b    1
  1060. hideon        dc.b    1
  1061. sorton        dc.b    1
  1062. wanttraps   dc.b    0
  1063. addlines    dc.b    0
  1064. eof        dc.b    0
  1065. fromfile    dc.b    0
  1066. iconifyon   dc.b    1
  1067. gotguru     dc.b    0
  1068. ownscreen   dc.b    0
  1069. insmode     dc.b    0
  1070. cmdcli        dc.b    1
  1071. params        dc.b    'tfdlrempisc'
  1072. parmnum     equ     *-params
  1073.         dc.b    0
  1074. t2header    dc.b    '   ID     STATE   SIGALLOC SIGWAIT  SIGRECVD    PC    TASKNAME',0
  1075. theader     dc.b    '   ID     TYPE      STATE    PRI  CPUSE NUM TASKNAME',0
  1076. lheader     dc.b    '  NODE   CNT VER REV  FLAGS    ',0
  1077. libnam        dc.b    'LIBRARY NAME',0
  1078. devnam        dc.b    'DEVICE NAME',0
  1079. resnam        dc.b    'RESOURCE NAME',0
  1080. mheader     dc.b    ' LOWER   UPPER      FREE ATTR  PRI HUNK NAME',0
  1081. cr        dc.b    10,0
  1082. iheader     dc.b    '  NODE     DATA     CODE    PRI T S   TYPE     INTERRUPT NAME',0
  1083. inheader    dc.b    '  NODE     DATA     CODE    PRI NAME',0
  1084. rheader     dc.b    '  ADDR    PRI  FLAGS     VER   TYPE    RESIDENT NAME',0
  1085. pheader     dc.b    '  NODE   PORTNAME        FLAGS SIGBT NUM SIGTASK',0
  1086. hunkheader  dc.b    ' NUM  BCPL    DATA     LENGTH',0
  1087. ddheader    dc.b    'DEVICE    HDS SECTORS  TRACKS BUFFERS STATE    HANDLER',0
  1088. cdheader    dc.b    'PROCESSNAME    CURRENT DIRECTORY',0
  1089. ofheader    dc.b    '  LOCK   ACCESS  SIZE   PATH/FILENAME',0
  1090. scrheader   dc.b    'NUM   ADDR   TITLE',0
  1091. wnheader    dc.b    ' ADDR    OWNERTASK   TITLE',0
  1092. fohead        dc.b    '  NODE   CNT  Y   X  TYPE  LO  HI NAME',0
  1093. kickhead    dc.b    'START    END      LENGTH',0
  1094. snoophead   dc.b    'ACTION REQUIREMENTS        LENGTH   FROM    TO       CALLER',0
  1095. stackhead   dc.b    'SPLower     SIZE    USED TASKNAME',0
  1096. clicomhead  dc.b    '   ID    STATE    TYPE  MODE NUM PROCESSNAME      COMMAND',0
  1097. tiohead     dc.b    'IORQUEST  UNIT   SECS  REQUESTING TASK',0
  1098. dchead        dc.b    '  NODE     DATA     CODE   UNIT TASK',0
  1099. alhead        dc.b    'ALIAS NAME        COMMAND',0
  1100. tdd        dc.b    'trackdisk.device',0
  1101. tddrives    dc.b    'DF : ',0
  1102. timerunits  dc.b    'MicroHz ',0
  1103.         dc.b    'VBlank  ',0
  1104. access        dc.b    ' Read  ',0
  1105.         dc.b    ' Write ',0
  1106. romfnt        dc.b    'Rom  ',0
  1107. diskfnt     dc.b    'Disk ',0
  1108. wbname        dc.b    'Workbench',0
  1109. status        dc.b    'Added    ',0
  1110.         dc.b    'Running  ',0
  1111.         dc.b    'Ready    ',0
  1112.         dc.b    'Waiting  ',0
  1113.         dc.b    'Exeption ',0
  1114.         dc.b    'Removed  ',0
  1115.         dc.b    'Frozen   ',0
  1116.         dc.b    'Frozen   ',0
  1117. type        dc.b    'Unknown   ',0
  1118. tasktype    dc.b    'Task      ',0
  1119.         dc.b    'Interrupt ',0
  1120.         dc.b    'Device    ',0
  1121.         dc.b    'Msgport   ',0
  1122.         dc.b    'Message   ',0
  1123.         dc.b    'Freemsg   ',0
  1124.         dc.b    'Replymsg  ',0
  1125.         dc.b    'Resource  ',0
  1126.         dc.b    'Library   ',0
  1127.         dc.b    'Memory    ',0
  1128. softinttype dc.b    'Softint   ',0
  1129.         dc.b    'Font      ',0
  1130. proctype    dc.b    'Process   ',0
  1131.         dc.b    'Semaphore ',0
  1132. mp_flags    dc.b    'Signal  ',0
  1133.         dc.b    'Softint ',0
  1134.         dc.b    'Ignore  ',0
  1135. windowname  dc.b    'Xoper V2.2 (c) 1989 Werner G',$fc,'nther',0
  1136. newname     dc.b    'Xoper',0
  1137. memportname dc.b    'MemSnoop',0
  1138. xopcon        dc.b    'XopPackets',0
  1139. xopsleep    dc.b    'Xop-A-A-x',0
  1140. IOcntname   dc.b    'Xop-I/O-counter',0
  1141.  
  1142. cmdnum        set      0
  1143. commds        ADDCMD  'time'
  1144.         ADDCMD  'taskpri'
  1145.         ADDCMD  'info'
  1146.         ADDCMD  'pri'
  1147.         ADDCMD  'flush'
  1148.         ADDCMD  'freeze'
  1149.         ADDCMD  'warm'
  1150.         ADDCMD  'signal'
  1151.         ADDCMD  'break'
  1152.         ADDCMD  'alert'
  1153.         ADDCMD  'lastalert'
  1154.         ADDCMD  'hold'
  1155.         ADDCMD  'exit'
  1156.         ADDCMD  'clear'
  1157.         ADDCMD  'cancel'
  1158.         ADDCMD  'taskports'
  1159.         ADDCMD  'hunks'
  1160.         ADDCMD  'devices'
  1161.         ADDCMD  'openlib'
  1162.         ADDCMD  'closelib'
  1163.         ADDCMD  'currentdir'
  1164.         ADDCMD  'cd'
  1165.         ADDCMD  'mypri'
  1166.         ADDCMD  'files'
  1167.         ADDCMD  'locks'
  1168.         ADDCMD  'unlock'
  1169.         ADDCMD  'screens'
  1170.         ADDCMD  'windows'
  1171.         ADDCMD  'closescreen'
  1172.         ADDCMD  'closewindow'
  1173.         ADDCMD  'fonts'
  1174.         ADDCMD  'windowfonts'
  1175.         ADDCMD  'lockdrive'
  1176.         ADDCMD  'freedrive'
  1177.         ADDCMD  'capture'
  1178.         ADDCMD  'clrcold'
  1179.         ADDCMD  'clrcool'
  1180.         ADDCMD  'clrwarm'
  1181.         ADDCMD  'snoop'
  1182.         ADDCMD  'usage'
  1183.         ADDCMD  'inputhandler'
  1184.         ADDCMD  'header'
  1185.         ADDCMD  'sort'
  1186.         ADDCMD  'hide'
  1187.         ADDCMD  'hidden'
  1188.         ADDCMD  'window'
  1189.         ADDCMD  'kill'
  1190.         ADDCMD  'iconifyoff'
  1191.         ADDCMD  'historylines'
  1192.         ADDCMD  'minimumchars'
  1193.         ADDCMD  'showhistory'
  1194.         ADDCMD  'repeat'
  1195.         ADDCMD  'remresident'
  1196.         ADDCMD  'saveoutput'
  1197.         ADDCMD  'killhistory'
  1198.         ADDCMD  'backdropicon'
  1199.         ADDCMD  'setfont'
  1200.         ADDCMD  'trapguru'
  1201.         ADDCMD  'outputlines'
  1202.         ADDCMD  'usescreen'
  1203.         ADDCMD  'usewindow'
  1204.         ADDCMD  'timerio'
  1205.         ADDCMD  'diskchange'
  1206.         ADDCMD  'alias'
  1207.         ADDCMD  'remnode'
  1208.         ADDCMD  'setfkey'
  1209.         ADDCMD  'clicmd'
  1210. hexarea     dc.b    '         ',0
  1211. hextab        dc.b    '0123456789abcdef'
  1212. infoh2        dc.b    'Dispat/Sec:',0
  1213. infoh1        dc.b    'CPU:',0
  1214. infoh3        dc.b    'CPU activity: ',0
  1215. infoh6        dc.b    'Total:',0
  1216. infoh4        dc.b    '% ',0
  1217. infoh7        dc.b    'I/O Ints/Sec: ',0
  1218. cpu0        dc.b    '68000',0
  1219. cpu1        dc.b    '68010',0
  1220. cpu2        dc.b    '68020',0
  1221. cpu3        dc.b    '/68881',0
  1222. devload     dc.b    'loaded   ',0
  1223. devnload    dc.b    'unloaded ',0
  1224. inten        dc.b    'E ',0
  1225. intdis        dc.b    'D ',0
  1226. intserv     dc.b    'S ',0
  1227. inthand     dc.b    'H ',0
  1228. notfile     dc.b    '--- ------- ------- ------- ',0
  1229. longnix     dc.b    '-'
  1230. smallnix    dc.b    '----'
  1231. nix        dc.b    '--- ',0
  1232. noinfo        dc.b    'No Info on'
  1233. oneblank    dc.b    ' ',0
  1234. equal        dc.b    '=  ',0
  1235. openbrak    dc.b    '[ ',0
  1236. closebrak   dc.b    ' ]',0
  1237. namerr        dc.b    'Unable to find ',0
  1238. fonterr     dc.b    "Can't open ",0
  1239. adrerr        dc.b    'Address Error!',0
  1240. aliaserr    dc.b    'Single character alias names using "',0
  1241. aliaserr2   dc.b    '"',10,'are not allowed.',0
  1242. noworkbench dc.b    "Workbench isn't active !",0
  1243. openerr     dc.b    'Could not open file ',0
  1244. noderr        dc.b    "Can't find this Node. Continue anyway ? (Y/N)",0
  1245. listerr     dc.b    'Unable to find ListHeader. Sort aborted.',0
  1246. wiwerr        dc.b    'Script file only',0
  1247. gurutxt     dc.b    'Guru Meditation #',0
  1248. clrtxt        dc.b    'Memory Hunks cleared.',0
  1249. canerr0     dc.b    'Process is not a CLI-task',10
  1250.         dc.b    'Has it been started from Workbench ? (Y/N)',10,0
  1251. canerr1     dc.b    'Process was created by CreateProc()',10
  1252.         dc.b    'Shall I UnLoad() ? (Y/N)',10,0
  1253. unloaderr   dc.b    "Arrrgh.. can't find segments, aborting",0
  1254. noprocs     dc.b    'Not a Process.',0
  1255. notload     dc.b    'No program loaded.',0
  1256. cliprocs    dc.b    'Cli-Process',0
  1257. procloaded  dc.b    'Loaded as a command: ',0
  1258. segloaded   dc.b    'Created by CreateProc()',0
  1259. coldtxt     dc.b    'Cold Capture: ',0
  1260. cooltxt     dc.b    'Cool Capture: ',0
  1261. warmtxt     dc.b    'Warm Capture: ',0
  1262. kicktxt     dc.b    'KickMem     : ',0
  1263. unset        dc.b    'unset',0
  1264. intnames    dc.b    'Serial Out ',0
  1265.         dc.b    'Disk Block ',0
  1266.         dc.b    'SoftInt    ',0
  1267.         dc.b    'Ports      ',0
  1268.         dc.b    'Coper      ',0
  1269.         dc.b    'Vert.Blank ',0
  1270.         dc.b    'Blitter    ',0
  1271.         dc.b    'Audio Ch.0 ',0
  1272.         dc.b    'Audio Ch.1 ',0
  1273.         dc.b    'Audio Ch.2 ',0
  1274.         dc.b    'Audio Ch.3 ',0
  1275.         dc.b    'Serial In  ',0
  1276.         dc.b    'Disk Sync  ',0
  1277.         dc.b    'External   ',0
  1278.         dc.b    'SoftInt    ',0
  1279.         dc.b    'NMI        ',0
  1280. inttyp        dc.b    0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1
  1281. fontname    dc.b    'topaz.font',0
  1282. devicenam   dc.b    'input.device',0
  1283. timernam    dc.b    'timer.device',0
  1284. memlarg     dc.b    'LARGEST ',0
  1285. memclr        dc.b    'CLEAR ',0
  1286. memfast     dc.b    'FAST ',0
  1287. memchip     dc.b    'CHIP ',0
  1288. mempubl     dc.b    'PUBLIC ',0
  1289. failed        dc.b    'Failed !',0
  1290. allok        dc.b    'ALLOC: ',0
  1291. free        dc.b    'FREE: ',0
  1292. backg        dc.b    'Bckg ',0
  1293. foreg        dc.b    'Frgr ',0
  1294. script        dc.b    'Batch ',0
  1295. interact    dc.b    'Intct ',0
  1296. startupname dc.b    'S:Xoper.Startup',0
  1297. nameerr     dc.b    'Name or address is missing.',10
  1298. synerr        dc.b    'Syntax Error, type "?" for help',10,0
  1299. wberr        dc.b    "Can't examine Workbench locks",0
  1300. dnotf        dc.b    'Directory not found',0
  1301. notdir        dc.b    'Not a directory',0
  1302. nomount     dc.b    ' not mounted.',0
  1303. dishelp     dc.b    10,'Names are case sensitive and followed by a ":"',0
  1304. unlerr        dc.b    'Lock not found',0
  1305. unl1        dc.b    'Lock is on ',0
  1306. unltxt        dc.b    'Old lock was: ',0
  1307. unltxt2     dc.b    'Unlock ? (Y/N)',10,0
  1308. scnofound   dc.b    'Screen not found.',0
  1309. winnofound  dc.b    'Window not found.',0
  1310. stperr        dc.b    'Task must be "READY" or "WAITING"',10,0
  1311. waerr        dc.b    'Task must be "FROZEN"',10,0
  1312. whatsthis   dc.b    '???.?',0
  1313. toomuch     dc.b    '??? ',0
  1314. timenotset  dc.b    ' disabled.',0
  1315. whattime    dc.b    'Refresh time in secs:',0
  1316. stoped        dc.b    '<Break>',0
  1317. onscr        dc.b    'On Screen: ',0
  1318. whatnow     dc.b    'Kill, ignore (K/I)?',0
  1319. noguru        dc.b    'None found.',0
  1320. softfail    dc.b    'Software failure!',10,'Task: ',0
  1321. addrserr    dc.b    'Bad aligned address was: ',0
  1322. procount    dc.b    'PC: ',0
  1323. diskfont    dc.b    'diskfont.library',0
  1324. usetxt        dc.b    'USAGE: Xoper [T] [F] [L] [D] [R] [E] [M] [P] [I] [S] [C]',10
  1325.         dc.b    'OR     Xoper -b',10
  1326.         dc.b    'DISPLAY:',10
  1327.         dc.b    '[T]asks    [F]=taskflags [L]ibraries [D]evices    [R]esources',10
  1328.         dc.b    'r[E]sident [M]emory      [P]orts     [I]nterrupts [S]tack',10
  1329.         dc.b    '[C]litasks [Q]uit',10,10
  1330.         dc.b    'OTHER SYSTEM LISTS:',10
  1331.         dc.b    'Windows    Screens      Fonts       WindowFonts  CurrentDir',10
  1332.         dc.b    'Files      Locks        Devices     InputHandler Capture',10
  1333.         dc.b    'TimerIO    DiskChange',10,10
  1334.         dc.b    'COMMANDS:',10
  1335.         dc.b    'Time         <secs>',10
  1336.         dc.b    'Taskpri      <priority>  [processnum] <taskname>',10
  1337.         dc.b    'Mypri        <priority>',10
  1338.         dc.b    'Signal       <mask(hex)> [processnum] <taskname>',10
  1339.         dc.b    'Break        [processnum] <taskname>',10
  1340.         dc.b    'Freeze|Warm  [processnum] <taskname>',10
  1341.         dc.b    'Kill         [processnum] <taskname>',10
  1342.         dc.b    'Snoop        [processnum] <taskname>',10
  1343.         dc.b    'Hide         <taskname>',10
  1344.         dc.b    'Pri          <priority> <nodename>',10
  1345.         dc.b    'Info         <name>',10
  1346.         dc.b    'RemResident  <resident module name>',10
  1347.         dc.b    'Clear        <longword(hex)>',10
  1348.         dc.b    'Hunks        [processnum] <procname>',10
  1349.         dc.b    'CD           <directory> [processnum] <procname>',10
  1350.         dc.b    'UnLock       <lock>',10
  1351.         dc.b    'OpenLib    | Closelib <libraryname>',10
  1352.         dc.b    'CloseWindow| Closescreen <title>',10
  1353.         dc.b    'SetFont      [size] <fontname> <windowtitle>',10
  1354.         dc.b    'LockDrive  | Freedrive   <drivename:>',10
  1355.         dc.b    'Window       <leftedge topedge width height> (scriptfile only) ',10
  1356.         dc.b    'OutputLines  <maximum # of lines>',10
  1357.         dc.b    'HistoryLines <maximum # of lines>',10
  1358.         dc.b    'MinimumChars <minimum # of characters>',10
  1359.         dc.b    'SaveOutput   <filename>',10
  1360.         dc.b    'Repeat       <Command line>',10
  1361.         dc.b    'SetFKey      <number> <string>',10
  1362.         dc.b    'Alias        [<aliasname> <commandname>]',10,10
  1363.         dc.b    'COMMANDS WITHOUT PARAMETERS:',10
  1364.         dc.b    'Flush      LastAlert    ClrCool     ClrCold      ClrWarm',10
  1365.         dc.b    'TrapGuru',10,10
  1366.         dc.b    'OPTIONS:',10
  1367.         dc.b    'Sort       TaskPorts    Hidden      Usage        Header',10
  1368.         dc.b    'IconifyOff BackDropIcon ShowHistory KillHistory  UseScreen',10
  1369.         dc.b    'UseWindow  CLICmd',10
  1370.         dc.b    'Hold       Exit'
  1371. null        dc.b    0
  1372.  
  1373.     IFD DEBUG
  1374. dosname     dc.b    'dos.library',0
  1375. intuiname   dc.b    'intuition.library',0
  1376. gfxname     dc.b    'graphics.library',0
  1377. conname     dc.b    'console.device',0
  1378.         EVEN
  1379.     ENDC
  1380.  
  1381.         BSS     blabla
  1382. buffer        ds.b    2200
  1383. out        ds.b    100
  1384. dummy        ds.b    80
  1385. in        ds.b    80
  1386. cputime     ds.b    1000
  1387. ievent        ds.b    32
  1388. outevent    ds.b    20
  1389. inputbuffer ds.b    88
  1390. repeatbuffer ds.b   81
  1391.  
  1392. mypacket    BSS     standardpacket
  1393.  
  1394. LN_SUCC     ds.l    1
  1395. LN_PRED     ds.l    1
  1396. LN_TYPE     ds.b    1
  1397. LN_PRI        ds.b    1
  1398. LN_NAME     ds.l    1
  1399. MP_FLAGS    ds.b    1
  1400. MP_SIGBIT   ds.b    1
  1401. MP_SIGTASK  ds.l    1
  1402. MN_SIZE     ds.w    1
  1403. LH_HEAD     ds.l    1
  1404. LH_TAIL     ds.l    1
  1405. LH_TAILPRED ds.l    1
  1406. LH_TYPE     ds.b    1
  1407. LH_pad        ds.b    1
  1408. dp_Link     ds.l    1
  1409. dp_Port     ds.l    1
  1410. dp_Type     ds.l    1
  1411. dp_Res1     ds.l    1
  1412. dp_Res2     ds.l    1
  1413. dp_Arg1     ds.l    1
  1414. dp_Arg2     ds.l    1
  1415. dp_Arg3     ds.l    1
  1416. dp_Arg4     ds.l    1
  1417. dp_Arg5     ds.l    1
  1418. dp_Arg6     ds.l    1
  1419. dp_Arg7     ds.l    1
  1420.  
  1421. timerio     ds.b    40
  1422.  
  1423.         CODE ICONIFY,CHIP
  1424.  
  1425. iconify     lea     icnwindow,a0
  1426.         CALL    OpenWindow,intuibase
  1427.         move.l  d0,iconwindow
  1428.  
  1429. waitforcall move.l  iconwindow,a0
  1430.         move.l  $56(a0),a0              ;wn->UserPort
  1431.  
  1432.         moveq   #0,d1
  1433.         move    d1,d0
  1434.         move.b  15(a0),d1               ;UserPort->SigBit
  1435.         bset    d1,d0
  1436.         move.l  d0,d6
  1437.         or.l    mysignal,d0
  1438.         or.l    trapsignal,d0
  1439.         CALL    Wait,_SysBase
  1440.         and.l   d0,d6
  1441.         bne.s   fromwindow
  1442.         move.l  mysignal,d1
  1443.         and.l   d0,d1
  1444.         bne     icondone
  1445.         and.l   trapsignal,d0
  1446.         beq.s   waitforcall
  1447.         move.b  #1,gotguru
  1448.         bra.s   icondone
  1449.  
  1450. fromwindow  move.l  iconwindow,a0
  1451.         move.l  $56(a0),a0              ;wn->UserPort
  1452.         CALL    GetMsg,_SysBase
  1453.         tst.l   d0
  1454.         beq.s   waitforcall
  1455.         move.l  d0,a1
  1456.         CALL    ReplyMsg,_SysBase
  1457.  
  1458.         move.l  iconwindow(PC),a0
  1459.         move.l  4(a0),d5
  1460.         cmp.l   icnwindow(PC),d5
  1461.         bne.s   1$
  1462.         lea     nsecs(PC),a0
  1463.         lea     nmics(PC),a1
  1464.         CALL    CurrentTime,intuibase
  1465.         movem.l osecs,d0-d3
  1466.         CALL    DoubleClick,intuibase
  1467.         tst.l   d0
  1468.         bne.s   icondone
  1469.         move.l  nsecs(PC),osecs
  1470.         move.l  nmics(PC),omics
  1471. 1$        move.l  d5,icnwindow
  1472.         bra     waitforcall
  1473.  
  1474. icondone    move.l  iconwindow,a0
  1475.         move.l  4(a0),icnwindow         ;LeftEdge+TopEdge
  1476.         CALL    CloseWindow,intuibase
  1477.         rts
  1478.  
  1479. osecs        dc.l    0
  1480. omics        dc.l    0
  1481. nsecs        dc.l    0
  1482. nmics        dc.l    0
  1483.  
  1484. iconwindow  dc.l    0
  1485. icnwindow   dc.w    40,170,72,28
  1486.         dc.b    0,1
  1487.         dc.l    $20,$800
  1488.         dc.l    gadget,0,0,0,0
  1489.         dc.w    72,28,72,28
  1490.         dc.w    1
  1491.  
  1492. gadget        dc.l    0
  1493.         dc.w    0,0,72,28,4,2,$20
  1494.         dc.l    image
  1495.         dc.l    0,0,0,0
  1496.         dc.w    0
  1497.         dc.l    0
  1498.  
  1499. image        dc.w    0,0,72,28,2
  1500.         dc.l    imagedata
  1501.         dc.b    3,0
  1502.         dc.l    0
  1503.  
  1504. imagedata   dc.w    $000F,$FFFF,$FFFF,$FFF8,$0000,$001F,$FFFF,$FFFF
  1505.         dc.w    $FFFC,$0000,$001F,$0000,$0000,$007C,$0000,$001F
  1506.         dc.w    $7FFF,$FFFF,$FF7C,$0000,$001F,$4A46,$0244,$557C
  1507.         dc.w    $0000,$001F,$5108,$D411,$817C,$0000,$001F,$7FFF
  1508.         dc.w    $FFFF,$FF7C,$0000,$001F,$0000,$0000,$007C,$0000
  1509.         dc.w    $001F,$30C0,$0000,$007C,$0000,$001F,$1980,$0000
  1510.         dc.w    $007C,$0000,$001F,$0F0F,$1F0F,$1F7C,$0000,$001F
  1511.         dc.w    $0619,$9999,$997C,$0000,$001F,$0F19,$999F,$987C
  1512.         dc.w    $0000,$001F,$1999,$9F18,$187C,$0000,$001F,$30CF
  1513.         dc.w    $180F,$187C,$0000,$001F,$0000,$1800,$007C,$0000
  1514.         dc.w    $001F,$0000,$0000,$007C,$0000,$001F,$FFFF,$FFFF
  1515.         dc.w    $FFFC,$0000,$000F,$FFFF,$FFFF,$FF18,$0000,$0000
  1516.         dc.w    $0000,$0000,$0000,$0000,$3FFF,$FFFF,$FFFF,$FFFF
  1517.         dc.w    $FC00,$FDFF,$FFFF,$FFFF,$FFFF,$FF00,$EBFF,$FFFF
  1518.         dc.w    $FFFF,$FFFF,$FF00,$F7FF,$FFFF,$FFFF,$F800,$0700
  1519.         dc.w    $FFFF,$FFFF,$FFFF,$FFFF,$FF00,$FFFF,$FFFF,$FFFF
  1520.         dc.w    $FFFF,$FF00,$FFFF,$FFFF,$FFFF,$FFFF,$FF00,$3FFF
  1521.         dc.w    $FFFF,$FFFF,$FFFF,$FC00,$0000,$0000,$0000,$0000
  1522.         dc.w    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$FFFF
  1523.         dc.w    $FFFF,$FF80,$0000,$0000,$FFFF,$FFFF,$FF80,$0000
  1524.         dc.w    $0000,$FFFF,$FFFF,$FF80,$0000,$0000,$FFFF,$FFFF
  1525.         dc.w    $FF80,$0000,$0000,$FFFF,$FFFF,$FF80,$0000,$0000
  1526.         dc.w    $FFFF,$FFFF,$FF80,$0000,$0000,$8000,$0000,$0080
  1527.         dc.w    $0000,$0000,$8000,$0000,$0080,$0000,$0000,$8000
  1528.         dc.w    $0000,$0080,$0000,$0000,$8000,$0000,$0080,$0000
  1529.         dc.w    $0000,$8000,$0000,$0080,$0000,$0000,$8000,$0000
  1530.         dc.w    $0080,$0000,$0000,$8000,$0000,$0080,$0000,$0000
  1531.         dc.w    $8000,$0000,$0080,$0000,$0000,$FFFF,$FFFF,$FF80
  1532.         dc.w    $0000,$0000,$0000,$0000,$00E0,$0000,$0000,$0000
  1533.         dc.w    $0000,$00E0,$0000,$0000,$1FFF,$FFFF,$F800,$0000
  1534.         dc.w    $0000,$0080,$0040,$0000,$0000,$0200,$0080,$0040
  1535.         dc.w    $0000,$0000,$1400,$0080,$0040,$003F,$0000,$0800
  1536.         dc.w    $0080,$0040,$07FF,$F800,$0000,$0080,$0040,$003F
  1537.         dc.w    $0000,$0000,$0080,$0040,$0000,$3800,$FFFF,$FFFF
  1538.         dc.w    $FFFF,$FFFF,$FE00,$0000,$0080,$0040,$0000,$0000
  1539.  
  1540. iconifgad   dc.l    0
  1541.         dc.w    -83,0
  1542.         dc.w    31,10
  1543.         dc.w    $14
  1544.         dc.w    $41
  1545.         dc.w    1
  1546.         dc.l    iconifimg
  1547.         dc.l    0
  1548.         dc.l    0
  1549.         dc.l    0
  1550.         dc.l    0
  1551.         dc.w    0
  1552.         dc.l    0
  1553.  
  1554. iconifimg   dc.w    0,0
  1555.         dc.w    31,10
  1556.         dc.w    2
  1557.         dc.l    iconifdata
  1558.         dc.b    $0003,$0000
  1559.         dc.l    0
  1560.  
  1561. iconifdata  dc.w    $7FFF,$FFFC,$601F,$FFFC,$6000,$000C,$607F,$FFCC
  1562.         dc.w    $6060,$00CC,$6067,$FCCC,$7E60,$00CC,$7E7F,$FFCC
  1563.         dc.w    $7E00,$000C,$7FFF,$FFFC,$0000,$0000,$1FE0,$0000
  1564.         dc.w    $1FFF,$FFF0,$1F80,$0030,$1F9F,$FF30,$1F98,$0330
  1565.         dc.w    $019F,$FF30,$0180,$0030,$01FF,$FFF0,$0000,$0000
  1566.  
  1567.  
  1568.         END
  1569.  
  1570.